package br.com.gip.business.impl;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import br.com.gip.business.ProjetoBusiness;
import br.com.gip.constant.Status;
import br.com.gip.exception.BusinessException;
import br.com.gip.repository.dao.ProjetoDao;
import br.com.gip.repository.model.Projeto;
import br.com.gip.wrapper.BuscaProjeto;

@Service
public class ProjetoBusinessImpl implements ProjetoBusiness {

	private static final long serialVersionUID = -2732680512471601785L;

	@Autowired
	private ProjetoDao projetoDao;

	@Override
	public void salvarProjeto(Projeto projeto) {
		if (projeto.getProjetoId() == null) {
			boolean projetoValido = this.buscarProjetos(projeto.getNome(), null).isEmpty();
			if (!projetoValido) {
				throw new BusinessException("Projeto ja existente");
			}
		}
		
		this.projetoDao.saveOrUpdate(projeto);
	}

	@Override
	public Projeto buscarProjeto(Long codigo) {
		return this.projetoDao.findById(codigo);
	}
	
	@Override
	public List<Projeto> buscarProjetos(String nome, Status status) {
		return this.projetoDao.findByFilter(nome, status);
	}

	@Override
	public List<Projeto> buscarProjetos(BuscaProjeto dadosProjeto) {
		return this.projetoDao.findByDadosProjeto(dadosProjeto);
	}

	@Override
	public List<Projeto> buscarProjetos() {
		return this.projetoDao.findAll();
	}

}
